﻿//using System;
//using Library.Collections.Generic;
//using Library.Collections.Specialized;
//using System.Collections.Generic;

//namespace Library.Linq
//{
//    public static class Graph
//    {
//        public static INodeOutgoing<TNode, TEdge> Where<TNode, TEdge>(this INodeOutgoing<TNode, TEdge> node, Func<TEdge, bool> functor)
//            where TNode : INodeOutgoing<TNode, TEdge>
//            where TEdge : IEdgeTo<TNode>
//        {
//            throw new NotImplementedException();
//        }

//        public static INodeOutgoingValueNode<TNode, TEdge, TNodeValue> Where<TNode, TEdge, TNodeValue>(this INodeOutgoingValueNode<TNode, TEdge, TNodeValue> node, Func<TEdge, bool> functor)
//            where TNode : INodeOutgoingValueNode<TNode, TEdge, TNodeValue>
//            where TEdge : IEdgeTo<TNode>
//        {
//            throw new NotImplementedException();
//        }

//        public static INodeOutgoingValue<TNode, TEdge, TNodeValue, TEdgeValue> Where<TNode, TEdge, TNodeValue, TEdgeValue>(this INodeOutgoingValue<TNode, TEdge, TNodeValue, TEdgeValue> node, Func<TEdge, bool> functor)
//            where TNode : INodeOutgoingValue<TNode, TEdge, TNodeValue, TEdgeValue>
//            where TEdge : IEdgeTo<TNode>, IHasValueReadOnly<TEdgeValue>
//        {
//            throw new NotImplementedException();
//        }

//        public static INodeOutgoing<TNode, TEdge> OrderBy<TNode, TEdge, TKey>(this INodeOutgoing<TNode, TEdge> node, Func<TEdge, TKey> keySelector)
//            where TNode : INodeOutgoing<TNode, TEdge>
//            where TEdge : IEdgeTo<TNode>
//        {
//            throw new NotImplementedException();
//        }

//        public static INodeOutgoingValueNode<TResult> Select<TNode, TEdge, TNodeValue, TResult>(this INodeOutgoingValueNode<TNode, TEdge, TNodeValue> node, Func<TNodeValue, TResult> selector)
//            where TNode : INodeOutgoingValueNode<TNode, TEdge, TNodeValue>
//            where TEdge : IEdgeTo<TNode>
//        {
//            throw new NotImplementedException();
//        }

//        public static INodeOutgoingValue<TResult, TEdgeValue> Select<TNode, TEdge, TNodeValue, TEdgeValue, TResult>(this INodeOutgoingValue<TNode, TEdge, TNodeValue, TEdgeValue> node, Func<TNodeValue, TResult> selector)
//            where TNode : INodeOutgoingValue<TNode, TEdge, TNodeValue, TEdgeValue>
//            where TEdge : IEdgeTo<TNode>, IHasValueReadOnly<TEdgeValue>
//        {
//            throw new NotImplementedException();
//        }

//        public static INodeOutgoingValue<TNodeValue, TResult> SelectEdge<TNode, TEdge, TNodeValue, TEdgeValue, TResult>(this INodeOutgoingValue<TNode, TEdge, TNodeValue, TEdgeValue> node, Func<TEdgeValue, TResult> selector)
//            where TNode : INodeOutgoingValue<TNode, TEdge, TNodeValue, TEdgeValue>
//            where TEdge : IEdgeTo<TNode>, IHasValueReadOnly<TEdgeValue>
//        {
//            throw new NotImplementedException();
//        }
//    }
//}
